home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
program
/
rcs5ap1s.lzh
/
RCSCLEAN.SH
< prev
next >
Wrap
Linux/UNIX/POSIX Shell Script
|
1991-01-10
|
2KB
|
108 lines
#! /bin/sh
#
# rcsclean - remove working files that are copies of the latest RCS revision
# $Id: rcsclean.sh,v 1.7 90/11/13 15:46:17 hammer Exp $
# This program removes working files which are copies of the latest
# revision on the default branch of the corresponding RCS files.
# For each file given, rcsclean performs a co operation for the latest
# revision on the default branch, and compares
# the result with the working file. If the two are identical,
# the working file is deleted.
#
# A typical application in a Makefile would be:
# clean:; rm *.o; rcsclean *.c *.o
#
# Limitation: This program doesn't work if given the name of
# an RCS file rather than the name of the working file.
PATH=/usr/local/bin:/bin:/usr/bin:/usr/ucb:$PATH
export PATH
usage='rcsclean: usage: rcsclean file ...'
case $1 in
0) echo >&2 "$usage"; exit 2
esac
_='
'
IFS=$_
rcs=rcs
rcsdiff=rcsdiff
for i
do
case $i in
-*)
case $i in
-[qr]*) rcs=$rcs$_$i
esac
rcsdiff=$rcsdiff$_$i
shift;;
*) break
esac
done
case $# in
0)
files=
for file in .* *
do
case $file in
*,v | . | ..) ;;
[-+]* | *$_*) echo >&2 "rcsclean: $file: strange file name"; exit 2;;
*)
case $file in
'*' | '.*') [ -f "$file" ] || continue
esac
files=$files$_$file
esac
done
case $files in
?*) set $files
esac;;
*)
case $* in
*$_*) echo >&2 'rcsclean: newline in arguments'; exit 2
esac
esac
remove=
status=0
for i
do
case $i in
-*)
case $i in
-[qr]*) rcs=$rcs$_$i
esac
rcsdiff=$rcsdiff$_$i;;
*,v)
echo >&2 "rcsclean: $i: cannot handle RCS file name"; exit 2;;
*)
$rcsdiff -q $i >/dev/null 2>&1
case $? in
# Ignore rcsdiff trouble (usually files that are not under RCS).
0) remove=$remove$_$i;;
1)
echo >&2 "rcsclean: $i: " || exit
status=1
esac
esac
done
case $remove in
?*)
unlock=`rlog -L -R -l${LOGNAME-$USER} $remove` &&
case $unlock in
?*) $rcs -u $unlock
esac &&
rm -f $remove || status=2
esac
exit $status